package com.example.theoretical_verification.collection;

import java.util.Comparator;
import java.util.TreeSet;

public class MyTreeSet02 {
    public static void main(String[] args) {
        TreeSet<Student01> treeSet= new TreeSet<>(new Comparator<Student01>() {
            @Override
            public int compare(Student01 o1, Student01 o2) {
                // o2在前，o1在后，应该就是按照名字来逆序吧
                int num =o2.getName().compareTo(o1.getName());
                // 名字相同按年龄逆序.也是o2在前，o1在后
                return num == 0? o2.getAge() - o1.getAge() : num;
            }
        });

        // 这个案例，能够正常跑完，不报错。
        Student01 s = new Student01("E", 12);
        treeSet.add(s);
        Student01 s1 = new Student01("B", 23);
        treeSet.add(s1);
        Student01 s2 = new Student01("D", 25);
        treeSet.add(s2);
        Student01 s3 = new Student01("A", 35);
        treeSet.add(s3);
        Student01 s4 = new Student01("C", 15);
        treeSet.add(s4);
        Student01 s5 = new Student01("A", 21);
        treeSet.add(s5);
        System.out.println(treeSet);

        // 实际打印结果就是名字、name的逆序，符合比较器定义的规则。
        // [Student{name='E', age=12}
        //, Student{name='D', age=25}
        //, Student{name='C', age=15}
        //, Student{name='B', age=23}
        //, Student{name='A', age=35}
        //, Student{name='A', age=21}
        //]
    }
}
